<?php 
/**
 *  Por Federico Pisarello - SisDev Software (c) 2012 - Buenos Aires, Argentina.
 * 	fpisarello@sisdevsoft.com
 */

require("includes/funciones.inc.php");
session_start();

function searchABMUsuarios()
{
	
	require("includes/constants.php");
	require("includes/datatables_db/Datatables.php");
	
	$datatables = new Datatables();
	$datatables->__construct();
	
	$datatables->select('idUsuario, usuario, nombreCompleto, eMail');
	$datatables->from('usuarios');
	$datatables->where('estado <>', $stateErase);
	$datatables->join('tipo_usuarios', 'usuarios.idTipoUsuario = tipo_usuarios.idTipoUsuario', 'inner');
	$datatables->select('descripcion');
		
	return $datatables->generate();
}

function addUsuario()
{
	require("includes/constants.php");

	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;

	$DB->StartTrans(); // start transaction
	
	$strSQL = "SELECT usuario FROM usuarios WHERE usuario = '".$_REQUEST["nombreUsuario"]."' AND estado <> '$stateErase'";
	$rsUsers = $DB->Execute($strSQL);		
	if(!$rsUsers->EOF)
	{
		$arrJSON->status = "ERROR";
		$arrJSON->msg = 'El nombre de usuario ingresado ya existe';
		return json_encode($arrJSON);
	}

	$strSQL = "INSERT INTO usuarios ( ";
	$strSQL .= "	usuario, ";
	$strSQL .= "	password, ";
	$strSQL .= "	nombreCompleto, ";
	$strSQL .= "	eMail, ";
	$strSQL .= "	estado, ";
	$strSQL .= "	idTipoUsuario ";
	$strSQL .= "	) VALUES ( ";
	$strSQL .= "	'".mb_strtoupper($_REQUEST["nombreUsuario"], "UTF-8")."', ";
	$strSQL .= "	'".md5($_REQUEST["claveUsuario"])."', ";
	$strSQL .= "	'".mb_strtoupper($_REQUEST["nombreCompletoUsuario"], "UTF-8")."', ";
	$strSQL .= "	'".$_REQUEST["eMailUsuario"]."', ";
	$strSQL .= "	'".$stateAdd."', ";
	$strSQL .= "	".$_REQUEST["cmbTipoUsuario"];
	$strSQL .= "	)";
	
	$DB->Execute($strSQL);
	
	if (!$DB->CompleteTrans())
	{
		$arrJSON->status = "ERROR";
		$arrJSON->msg = 'Ocurri&oacute; un error al grabar el Usuario';
	}
	else
	{
		$arrJSON->status = "OK";
		$arrJSON->msg = 'El registro se guard&oacute; correctamente';
	}	
	return json_encode($arrJSON);
}

function updateUsuario()
{
	require("includes/constants.php");

	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;

	$DB->StartTrans(); // start transaction
	
	$strSQL = "UPDATE usuarios SET ";
	$strSQL .= "	usuario = '".mb_strtoupper($_REQUEST["nombreUsuario"], "UTF-8")."', ";
	if(!empty($_REQUEST["claveUsuario"]))
		$strSQL .= "	password = '".md5($_REQUEST["claveUsuario"])."', ";
	$strSQL .= "	nombreCompleto = '".mb_strtoupper($_REQUEST["nombreCompletoUsuario"], "UTF-8")."', ";
	$strSQL .= "	eMail = '".$_REQUEST["eMailUsuario"]."', ";
	$strSQL .= "	estado = '".$stateModify."',";
	$strSQL .= "	idTipoUsuario = ".$_REQUEST["cmbTipoUsuario"];
	$strSQL .= " WHERE idUsuario = ". $_REQUEST["idUsuario"];
	
	$DB->Execute($strSQL);
	
	if (!$DB->CompleteTrans())
	{
		$arrJSON->status = "ERROR";
		$arrJSON->msg = 'Ocurri&oacute; un error al grabar el Usuario';
	}
	else
	{
		$arrJSON->status = "OK";
		$arrJSON->msg = 'El registro se guard&oacute; correctamente';
	}	
	return json_encode($arrJSON);
}

function del()
{
	require("includes/constants.php");
	
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	$DB->StartTrans(); // start transaction
	$DB->Execute("UPDATE usuarios SET estado='$stateErase' WHERE idUsuario=" . $_REQUEST["idUsuario"]); // execute query

	if (!$DB->CompleteTrans())
	{
		$arrJSON->status = "ERROR";
		$arrJSON->msg = 'Ocurri&oacute; un error al eliminar el Usuario';
	}
	else
	{
		$arrJSON->status = "OK";
		$arrJSON->msg = 'El registro se elimin&oacute; correctamente';
	}	
	return json_encode($arrJSON);
}

function getTiposUsuario()
{
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	$rsTipoUsuario = $DB->Execute("SELECT * FROM tipo_usuarios");
	
	$i=0;
	while(!$rsTipoUsuario->EOF){
		$arrTipoUsuario->data[$i]['idTipoUsuario'] = $rsTipoUsuario->fields(0);
		$arrTipoUsuario->data[$i++]['descripcion'] = $rsTipoUsuario->fields(1);
		$rsTipoUsuario->MoveNext();
	}
	
	return json_encode($arrTipoUsuario->data);
}

function editUsuario()
{
	require("includes/constants.php");
		
	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	$rsUsuarios = $DB->Execute("SELECT * FROM usuarios WHERE estado <> '$stateErase' AND idUsuario = " . $_REQUEST["idUsuario"]); // execute query
						
	if(!$rsUsuarios->EOF){
		$joUser->data['idUsuario'] = $rsUsuarios->fields("idUsuario");
		$joUser->data['usuario'] = $rsUsuarios->fields("usuario");
		$joUser->data['nombreCompleto'] = $rsUsuarios->fields("nombreCompleto");
		$joUser->data['eMail'] = $rsUsuarios->fields("eMail");
		$joUser->data['idTipoUsuario'] = $rsUsuarios->fields("idTipoUsuario");
		
		return json_encode($joUser->data);
	}
	else
		return json_encode('');
}


function validarUsuario()
{
	require("includes/constants.php");

	$DB = NewADOConnection('mysqlt');
	$DB->Connect();
	$DB->Execute("SET NAMES utf8;");
	//$DB->debug=true;
	
	$DB->StartTrans(); // start transaction
	$rsUsuario = $DB->Execute("SELECT * FROM usuarios WHERE usuario = '" . $_REQUEST["usuario"] . "' AND password = MD5('" . $_REQUEST["clave"] . "')");
	
	if($rsUsuario->EOF)
	{
		$arrJSON->status = "ERROR";
		$arrJSON->msg = 'El usuario no existe en la base de datos';
	}
	else
	{
		
		$_SESSION['idUsusario'] = $rsUsuario->fields("idUsuario");
		$_SESSION['usuario'] = $rsUsuario->fields("usuario");
		$_SESSION['nombreCompleto'] = $rsUsuario->fields("nombreCompleto");
		$_SESSION['idTipoUsuario'] = $rsUsuario->fields("idTipoUsuario");
		
		$arrJSON->status = "OK";
		$arrJSON->msg = '';
	}	

	return json_encode($arrJSON);
}

switch($_REQUEST['accion'])
{
	case "search":
		echo searchABMUsuarios();
		break;
		
	case "EDIT":
		echo editUsuario();
		break;
		
	case "DELETE":
		echo del();
		break;		
		
	case "NEW":
		echo addUsuario();
		break;
		
	case "UPDATE":
		echo updateUsuario();
		break;
				
	case "getTiposUsuario":
		echo getTiposUsuario();
		break;
				
	case "LOGIN":
		echo validarUsuario();
		break;
}
?>